package com.wxy.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;

@Configuration
public class redisConfig {

	    // 这里定义了一个Bean叫RedisTemplate，然后定义了一个泛型，key是String，值为Object，也就是默认key永远都是String
	    @Bean
	    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory){
	        // 创建RedisTemplate对象
	        RedisTemplate<String, Object> template = new RedisTemplate<>();
	        // redis的构建需要连接工厂，连接工厂不需要我们创建，因为SpringBoot会帮我们自动创建，我们只需要注入进来即可
	        template.setConnectionFactory(connectionFactory);
	        // 创建JSON序列化工具
//	        GenericJackson2JsonRedisSerializer jsonRedisSerializer = 
//	            							new GenericJackson2JsonRedisSerializer();
	        // 设置Key的序列化，使用String类型的序列化工具
	        template.setKeySerializer(RedisSerializer.string());
	        template.setHashKeySerializer(RedisSerializer.string());
	        // 设置Value的序列化，使用JSON类型的序列化工具
	        template.setValueSerializer(RedisSerializer.json());
	        template.setHashValueSerializer(RedisSerializer.json());
	        // 返回
	        return template;
	    }
	}
